Como detectar toque em objetos 3D na cena
⚠️ para que funcione corretamente é necessário que o objeto possua algum tipo de colisão ⚠️
Em sua classe Java, faça o seguinte:
public class SuaClasse extends Component {
// cria um novo Laser
private final Laser laser = new Laser();
// cria uma nova Camera, @Singleton anexa o primeiro componente do tipo Camera que encontrar na cena
@Singleton
private Camera camera;
@Override
public void start() {
}
@Override
public void repeat() {
// verificando se o primeiro toque detectado na tela é nulo e retornando o código caso seja verdadeiro
if(Input.getTouch(0) == null) return;
// Vector2 responsável por armazenar a posição do primeiro toque detectado na tela
Vector2 posicao = Input.getTouch(0).getPosition();
// a direção do raio que será disparado da camera na posição da variável "posicao"
RayDirection direcaoDoRaio = camera.screenPointRay(posicao);
// o raio que será disparado
Ray raio = new Ray(direcaoDoRaio, 0);
// o ponto de colisão do laser
LaserHit laserHit = laser.trace(raio);
// verificando se o laserHit é diferente de nulo
if(laserHit != null) {
// mostrando o nome do objeto que o laser detectou no terminal caso a condicional seja verdadeira
Console.log("O objeto detectado foi: " + laserHit.getObject().getName());
}
}
}